﻿using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.Text;
using com.clinica.business.BE.seguridad;
using com.clinica.business.BL.interfaces.seguridad;
using com.clinica.DL.sql.seguridad;
using com.clinica.business.entities;
/****************************************************************************************
 * Sistema    : Sistema de Gestión de Clinica
 * Modulo     : Facturación y Presupuestos
 * Descripción: 
 * Autor      : JPEREZ
 * Fecha      : 2011-06-01
 ****************************************************************************************/

namespace com.clinica.business.BL.seguridad
{
    [ServiceBehavior(Name = "UsuarioBL",
    Namespace = "http://com.clinica.business.BL.interfaces.seguridad",
    ConcurrencyMode = ConcurrencyMode.Multiple,
    InstanceContextMode = InstanceContextMode.PerSession,
    IncludeExceptionDetailInFaults = true)]
    public class UsuarioBL : IUsuarioBL
    {
        #region IUsuarioBL Members

        public List<UsuarioBE> validar(UsuarioBE request)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            List<UsuarioBE> lstUsuario = new List<UsuarioBE>();
            List<PerfilBE> lstPerfil = new List<PerfilBE>();
            List<OpcionBE> lstOpcion = new List<OpcionBE>();
            try
            {
                lstUsuario = UsuarioDL.ObtenerEmpresa(request);
                if (lstUsuario.Count > 0)
                {
                    if (lstUsuario[0].CodUsuario.Trim() == request.CodUsuario.Trim())
                    {
                        request.CodigoUsuario = lstUsuario[0].CodigoUsuario;
                        lstPerfil = PerfilDL.ObtenerPerfiles(request);
                        lstOpcion = OpcionDL.ObtenerOpciones(request);
                        if(lstPerfil.Count>0)
                            foreach (UsuarioBE oUsu in lstUsuario)
                            {
                                oUsu.Perfiles = lstPerfil;
                                oUsu.Opciones = lstOpcion;
                            }                        
                    }
                }
            }
            catch (Exception ex)
            {
                FaultReason err = new FaultReason(ex.Message);
                throw new FaultException(err);
                //new ErrorSGC(1,ex.Message)
            }
            return lstUsuario;
        }



        #endregion

    }
}
